import axios from "axios";//导入请求发送
import {ElMessage} from "element-plus";//导入更好看的提示框

const baseURL = '/api';//公共前缀
const instance = axios.create(
    {
        baseURL ,
        headers:{
            "Content-Type":"application/json"
        }
    })//创建请求实例
import {useTokenStore} from '@/sts/token.js'

//添加请求拦截器
instance.interceptors.request.use(
    (config)=>{
        //请求前调用
        //添加token-->令牌，在后端会进行解析令牌
        const tokenStore = useTokenStore();
        //判断有没有token,如果有token将token添加到请求头当中
        if(tokenStore.token){
            //console.log(tokenStore.token);
            config.headers.Authorization = tokenStore.token
            //console.log(config);
        }
        return config;
    },
    (err)=>{
        //请求错误调用
        Promise.reject(err)
    }
)
import router from '../router'
//添加响应拦截器
instance.interceptors.response.use(
    (result) => {
        //判断业务状态码1为业务成功
        if(result.data.code===1){
            return result.data;
        }
        //操作失败-->查看响应的错误信息，如果返回信息不为空则直接显示错误信息，若是返回的错误信息为空则显示服务异常
        //alert(result.data.msg?result.data.msg:'服务异常')
        ElMessage.error(result.data.msg?result.data.msg:'服务异常')
        //异步操作的状态转换为失败
        return Promise.reject(result.data)
    },
    (error) => {
        //判断响应状态码,如果为401,则证明未登录,提示请登录,并跳转到登录页面
        if(error.response && error.response.status === 401){
            ElMessage.error('请先登录');
            router.push('/login');
            return Promise.reject(error);//异步的状态转化成失败的状态
        }
    }
)
export default instance;
